package to4.server;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Date;
import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class Site {
	private ArrayList<Inlog> inlog;

	public Site() {
		inlog = new ArrayList<Inlog>();
	}
	//Voegt beheerder toe en controleert of e-mailadres al bestaat
	public boolean voegInlogToe(String email, String pass, String vr, String ach, Date geb, String ad, String nmr, String code, String plaats, String prov, String tel, String type) {
		boolean emailBestaatNogNiet;
		email = email.trim();
		emailBestaatNogNiet = !heeftInlog(email);
		if (emailBestaatNogNiet == true) {
			inlog.add(new Inlog(email, pass, vr, ach, geb, ad, nmr, code, plaats, prov, tel, type));
			System.out.println(email + " met als wachtwoord " +  pass + " toegevoegd aan arraylist");
		}
		if(emailBestaatNogNiet == false) {
			System.out.println(email + " is al toegevoegd");
		}
		return emailBestaatNogNiet;
	}
	//Voegt carpooler zonder auto toe
	public boolean voegZonderAuto(String email, String pass, String vrnm, String achternm, Date geboorte, String straat, String nr, String postcode, String woonplaats, String prov, String tel, String type, String reizen, String roken, String fiets){
		boolean emailBestaatNogNiet;
		email = email.trim();
		emailBestaatNogNiet = !heeftInlog(email);
		if (emailBestaatNogNiet == true) {
			inlog.add(new Inlog(email, pass, vrnm, achternm, geboorte, straat, nr, postcode, woonplaats, prov, tel, type));
			System.out.println(email + " met als wachtwoord " +  pass + ", zonder auto is toegevoegd aan arraylist");
			Inlog zoekEmail = zoek(email);
			if(zoekEmail != null){
				zoekEmail.setDeVoorkeuren(new Voorkeuren(reizen, roken, fiets));
			}
		}
		if(emailBestaatNogNiet == false) {
			System.out.println(email + " is al toegevoegd");
		}
		return emailBestaatNogNiet;
	}
	//Zorgt ervoor dat een persoon aan de array word toegevoegd
	public boolean voegPersoonToeAanAuto(String autoMail, String passagierMail){
		boolean b = false;
		for (Inlog i: inlog){
			if(i.getDeAuto() != null){
				if(i.getEmailadres().equals(autoMail)){
					Inlog auto = zoek(autoMail);
					if(auto != null){
						Inlog passagier = zoek(passagierMail);
						if(passagier != null){
							auto.getDeAuto().voegAutoToeAanPersoon(passagier);
							b = true;
						}
					}
				}
			}
		}
		return b;
	}

	//Voegt carpooler met auto toe
	public boolean voegMetAuto(String mailaddress, String ww, String vrnm, String achtrnm, Date geb, String strnm, String nr, String pstcd, String wnplts, String prvnc, String tlnmr, String tpe, String reizen, String roken, String fiets, String autoMerk, String autoType, int autoPlaatsen, boolean[] provincies, String comment){
		boolean emailBestaatNogNiet;
		mailaddress = mailaddress.trim();
		emailBestaatNogNiet = !heeftInlog(mailaddress);
		if (emailBestaatNogNiet == true) {
			inlog.add(new Inlog(mailaddress, ww, vrnm, achtrnm, geb, strnm, nr, pstcd, wnplts, prvnc, tlnmr, tpe));
			Inlog zoekEmail = zoek(mailaddress);
			if(zoekEmail != null){
				zoekEmail.setDeVoorkeuren(new Voorkeuren(reizen, roken, fiets));
				zoekEmail.setDeAuto(new Auto(autoMerk, autoType, autoPlaatsen, provincies, comment));
				System.out.println(mailaddress + " met als wachtwoord " +  ww + ", met auto is toegevoegd aan arraylist");
			}
		}
		if(emailBestaatNogNiet == false) {
			System.out.println(mailaddress + " is al toegevoegd");
		}
		return emailBestaatNogNiet;
	}

	//Voegt auto toe bij carpooler zonder auto en krijgt rechten voor account met auto
	public boolean voegAutoToe(String emailad, String autoMerk, String autoType, int autoPlaatsen, boolean[] provincies, String comment){
		emailad = emailad.trim();
		Inlog autoPersoon = zoek(emailad);
		if(autoPersoon != null){
			autoPersoon.setTypeAccount("met auto");

			autoPersoon.setDeAuto(new Auto(autoMerk, autoType, autoPlaatsen, provincies, comment));
			return true;
		}
		return false;
	}

	//Verwijdert auto bij carpooler met auto
	public boolean verwijderAuto(String email){
		Inlog autoPersoon = zoek(email);
		if(autoPersoon != null){
			autoPersoon.setTypeAccount("zonder auto");
			autoPersoon.getDeAuto().verwijderAllePassagiers();
			autoPersoon.removeDeAuto();

			return true;
		}
		return false;
	}
	//Wijzig het e-mailadres
	public boolean wijzigMail(String oudEmail, String nieuwEmail){
		if(heeftInlog(nieuwEmail)==true){
			return false;
		}
		else{
			for(Inlog i: inlog){
				if (i.getEmailadres().equals(oudEmail)){
					i.setEmailadres(nieuwEmail);
					System.out.println(nieuwEmail + " i.p.v." + oudEmail);
					return true;
				}
			}
		}
		return false;
	}
	//Controle of carpooler al is ingeschreven bij auto
	public boolean isIngeschrevenBijAuto(String emailad){
		boolean resultaat = false;
		for(Inlog i : inlog){
			if(i.getTypeAccount().equals("met auto")){

				resultaat = resultaat ||(i.getDeAuto().bestaatInArrayList(emailad) == true);
			}
		}
		return resultaat;
	}

	//Controle of email al bestaat
	public boolean heeftInlog(String email) {
		boolean resultaat = false;
		for (Inlog i:inlog) {
			resultaat = resultaat || (i.getEmailadres().equalsIgnoreCase(email));
		}
		return resultaat;
	}
	//Controle of email al bestaat
	public boolean heeftAccount(String vornam, String achternam, String strnm, String hn, String pscode, String wnplts, String prov) {
		boolean resultaat = false;
		for (Inlog i:inlog) {
			resultaat = resultaat || (i.getVoornaam().trim().equalsIgnoreCase(vornam.trim()) && i.getAchternaam().trim().equalsIgnoreCase(achternam.trim()) &&i.getAdres().trim().equalsIgnoreCase(strnm.trim()) && i.getHuisnummer().trim().equalsIgnoreCase(hn.trim()) && i.getPostcode().trim().equalsIgnoreCase(pscode.trim()) && i.getWoonplaats().trim().equalsIgnoreCase(wnplts.trim()) && i.getProvincie().trim().equalsIgnoreCase(prov.trim()));
		}
		return resultaat;
	}

	//Inlog controle
	public boolean isValidLogin(String email, String pwd){
		boolean geldigeInlog =false;
		for(Inlog i:inlog){
			geldigeInlog = geldigeInlog || (i.getEmailadres().equals(email) && i.getWachtwoord().equals(pwd));
		}
		return geldigeInlog;
	}

	//Wijzigt gegevens carpoolerzonderauto
	public boolean WijzigGegevensCarpoolerZonderAuto(String email, String vrnm, String achtrnm, Date geb, String strnm, String nr, String pstcd, String wnplts, String prvnc, String tlnmr, String labreizen, String labroken, String labfiets){
		Inlog wijzig = zoek(email);
		if(wijzig != null){
			wijzig.setVoornaam(vrnm);
			wijzig.setAchternaam(achtrnm);
			wijzig.setDate(geb);
			wijzig.setAdres(strnm);
			wijzig.setHuisnummer(nr);
			wijzig.setPostcode(pstcd);
			wijzig.setWoonplaats(wnplts);
			wijzig.setProvincie(prvnc);
			wijzig.setTelefoonnummer(tlnmr);
			wijzig.getDevoorkeuren().setReizen(labreizen);
			wijzig.getDevoorkeuren().setRoken(labroken);
			wijzig.getDevoorkeuren().setFiets(labfiets);
			return true;
		}
		else{
			return false;
		}
	}

	//wijzigt gegevens carpooler zonder auto
	public boolean WijzigGegevensCarpoolerMetAuto(String email, String vrnm, String achtrnm, Date geb, String strnm, String nr, String pstcd, String wnplts, String prvnc, String tlnmr, String labreizen, String labroken, String labfiets, String autoMerk, String autoType, int autoPlaatsen, boolean[] provincies, String comment) {
		Inlog wijzig = zoek(email);
		if(wijzig != null){
			wijzig.setVoornaam(vrnm);
			wijzig.setAchternaam(achtrnm);
			wijzig.setDate(geb);
			wijzig.setAdres(strnm);
			wijzig.setHuisnummer(nr);
			wijzig.setPostcode(pstcd);
			wijzig.setWoonplaats(wnplts);
			wijzig.setProvincie(prvnc);
			wijzig.setTelefoonnummer(tlnmr);
			wijzig.getDevoorkeuren().setReizen(labreizen);
			wijzig.getDevoorkeuren().setRoken(labroken);
			wijzig.getDevoorkeuren().setFiets(labfiets);
			wijzig.getDeAuto().setAutoMerk(autoMerk);
			wijzig.getDeAuto().setAutoType(autoType);
			wijzig.getDeAuto().setAutoPlaats(autoPlaatsen);
			wijzig.getDeAuto().setProvincies(provincies);
			wijzig.getDeAuto().setCommentaar(comment);
			return true;
		}
		else{
			return false;
		}
	}

	//E-mail verzenden bij vergeten wachtwoord
	public String sendPassWordmail(String emailad){
		String EindString = "";
		boolean wachtwoord = false;
		for(Inlog i:inlog){
			wachtwoord = wachtwoord || (i.getEmailadres().equalsIgnoreCase(emailad));
		}
		if(wachtwoord == true){
			EindString = "Succes";
			String s = "Beste " +getVoornaam(emailad)+",\n\nJe hebt aangegeven dat je je wachtwoord vergeten bent van je VakantieVibes account.";
			s+= "\nJe wachtwoord is: " + getPassword(emailad);
			s+= "\n\nBedankt dat je voor VakantieVibes heb gekozen, ";
			s+= "en we wensen je alvast een fijne reis!";
			s+= "\n\nM.v.g.\n\nVakantieVibes management";
			String msgBody = s;
			System.out.println(s);
			Properties props = new Properties(); 
			Session session = Session.getDefaultInstance(props, null); 
			try 
			{ 
				Message msg = new MimeMessage(session); 
				msg.setFrom(new InternetAddress("any email", "VakantieVibes administratie")); 
				msg.addRecipient(Message.RecipientType.TO, new InternetAddress(emailad, "Gebruiker VakantieVibes")); 
				msg.setSubject("Uw VakantieVibes wachtwoord"); 
				msg.setText(msgBody); 
				Transport.send(msg);
			} 
			catch (AddressException e) 
			{ 
				e.printStackTrace(); 
				return e.getLocalizedMessage(); 
			} 
			catch (MessagingException e) 
			{ 
				e.printStackTrace(); 
				return e.getLocalizedMessage(); 
			} 
			catch (UnsupportedEncodingException e) 
			{ 
				e.printStackTrace(); 
				return e.getLocalizedMessage(); 
			} 
		}
		if(wachtwoord == false){
			EindString = "faal";
		}
		return EindString;
	}

	public String sendContact(String emailad, String bericht){
		String EindString = "";
		boolean email = false;
		for(Inlog i:inlog){
			email = email || (i.getEmailadres().equalsIgnoreCase(emailad));
		}
		if(email == true){
			EindString = "succes";
			String s = getVoornaamAchternaam(emailad)+ " ("+ emailad+")"+"\n"+"\n"+"Heeft de volgende vraag gesteld:"+"\n";
			s+= bericht;
			String msgBody = s;
			System.out.println(s);
			Properties props = new Properties(); 
			Session session = Session.getDefaultInstance(props, null); 
			try 
			{ 
				Message msg = new MimeMessage(session); 
				msg.setFrom(new InternetAddress("any email", "VakantieVibes administratie")); 
				msg.addRecipient(Message.RecipientType.TO, new InternetAddress("any email", "Carpooler")); 
				msg.setSubject("Vraag aan VakantieVibes"); 
				msg.setText(msgBody); 
				Transport.send(msg);
			} 
			catch (AddressException e) 
			{ 
				e.printStackTrace(); 
				return e.getLocalizedMessage(); 
			} 
			catch (MessagingException e) 
			{ 
				e.printStackTrace(); 
				return e.getLocalizedMessage(); 
			} 
			catch (UnsupportedEncodingException e) 
			{ 
				e.printStackTrace(); 
				return e.getLocalizedMessage(); 
			} 
		}
		if(email == false){
			EindString = "faal";
		}
		return EindString;
	}

	public String sendRegisterMail(String emailad){
		boolean wachtwoord = false;
		String EindString ="succes";
		for(Inlog i:inlog){
			wachtwoord = wachtwoord || (i.getEmailadres().equalsIgnoreCase(emailad));
		}
		if(wachtwoord == true){
			String day = Integer.toString(getGeboortedatumDag(emailad));
			String month = Integer.toString(getGeboortedatumMaand(emailad));
			String year = Integer.toString(getGeboortedatumJaar(emailad));
			String s = "Beste " + getVoornaam(emailad)+",\n\n";
			s += "Je bent succesvol geregistreerd bij VakantieVibes!\n";
			s+= "Emailadres: " +emailad +"\n";
			s+= "Wachtwoord: " + getPassword(emailad) +"\n\n";
			s+= "De volgende gegevens zijn van je bekend:\n";
			s+= "Naam: " + getVoornaam(emailad) + " " + getAchternaam(emailad) +"\n";
			s+= "Geboortedatum: " + day +"-"+month+"-"+year  +"\n";
			s+= "Adres: " + getStraatnaam(emailad) + " " + getHuisnummer(emailad) +"\n";
			s+= "Postcode: " + getPostcode(emailad) + " " + getWoonplaats(emailad)+"\n";
			s+= "Provincie: " + getProvincie(emailad)+"\n";
			s+= "Telefoonnummer: " + getTelefoonnummer(emailad) +"\n\n";
			s+= "Je hebt de volgende voorkeuren opgegeven:\n";
			s+= "Reizen: " + getReizen(emailad)+"\n";
			s+= "Roken: " + getRoken(emailad)+"\n";
			s+= "Fiets: " + getFiets(emailad)+"\n";
			if (getTypeAccount(emailad).equals("zonder auto")){
				s+="\nEn je hebt geen auto, hiervoor dien je je aan te melden als passagier.";
				s+="\nAls je geen geschikte auto hebt gevonden kan je kiezen in het menu Voorkeuren om op de hoogte te blijven van nieuw toegevoegde auto's\n";
			}
			if (getTypeAccount(emailad).equals("met auto")){
				s+="\nEn je hebt een auto, hiervan zijn de volgende gegevens bij ons bekend:\n";
				s+="Auto: " + getAutoMerk(emailad) + " " + getAutoType(emailad)+"\n";
				s+="Aantal plaatsen (inc. chauffeur): " + Integer.toString(getAutoPlaatsen(emailad))+ " plaatsen"+"\n";
				s+="Je hebt aangegeven dat je door de volgende Nederlandse provincies rijd, als je naar je vakantiebestemming gaat:" + "\n" + getProvincieString(emailad) +"\n";
				if(getAutoCommentaar(emailad).equals("")){
					s+="\nEn je hebt geen commentaar opgegeven\n";
				}
				if(!(getAutoCommentaar(emailad).equals(""))){
					s+="Commentaar: " + getAutoCommentaar(emailad);
				}

			}
			s+="\nWij wensen je alvast een fijne vakantie!\n\n";
			s+="M.v.g." + "\n\n" + "Het VakantieVibes Management";
			String msgBody = s;

			System.out.println(s);
			Properties props = new Properties(); 
			Session session = Session.getDefaultInstance(props, null); 
			try 
			{ 
				Message msg = new MimeMessage(session); 
				msg.setFrom(new InternetAddress("any email", "VakantieVibes Administratie")); 
				msg.addRecipient(Message.RecipientType.TO, new InternetAddress(emailad, "Gebruiker VakantieVibes")); 
				msg.setSubject("Registratie VakantieVibes"); 
				msg.setText(msgBody); 
				Transport.send(msg);
			} 
			catch (AddressException e) 
			{ 
				e.printStackTrace(); 
				return e.getLocalizedMessage(); 
			} 
			catch (MessagingException e) 
			{ 
				e.printStackTrace(); 
				return e.getLocalizedMessage(); 
			} 
			catch (UnsupportedEncodingException e) 
			{ 
				e.printStackTrace(); 
				return e.getLocalizedMessage(); 
			} 
		}
		if (wachtwoord == false){
			EindString = "faal";
		}

		return EindString;
	}

	public String getPassword(String emailad){
		Inlog pswrd = zoek(emailad);
		if(pswrd != null){
			return pswrd.getWachtwoord();
		}
		return null;
	}
	public String getVoornaam(String emailad){
		Inlog voornaam = zoek(emailad);
		if(voornaam != null){
			return voornaam.getVoornaam();
		}
		return null;
	}
	public String getAchternaam(String emailad){
		Inlog achternaam = zoek(emailad);
		if(achternaam != null){
			return achternaam.getAchternaam();
		}
		return null;
	}
	public int getGeboortedatumDag(String emailad){
		Inlog geboortedatum = zoek(emailad);
		if(geboortedatum != null){
			return geboortedatum.getGeboortedatumDag();
		}
		return 0;
	}
	public int getGeboortedatumMaand(String emailad){
		Inlog geboortedatum = zoek(emailad);
		if(geboortedatum != null){
			return geboortedatum.getGeboortedatumMaand();
		}
		return 0;
	}
	public int getGeboortedatumJaar(String emailad){
		Inlog geboortedatum = zoek(emailad);
		if(geboortedatum != null){
			return geboortedatum.getGeboortedatumYear();
		}
		return 0;
	}

	public String getStraatnaam(String emailad){
		Inlog straatnaam = zoek(emailad);
		if(straatnaam != null){
			return straatnaam.getAdres();
		}
		return null;
	}
	public String getHuisnummer(String emailad){
		Inlog huisnummer = zoek(emailad);
		if(huisnummer != null){
			return huisnummer.getHuisnummer();
		}
		return null;
	}
	public String getPostcode(String emailad){
		Inlog postcode = zoek(emailad);
		if(postcode != null){
			return postcode.getPostcode();
		}
		return null;
	}
	public String getWoonplaats(String emailad){
		Inlog woonplaats = zoek(emailad);
		if(woonplaats != null){
			return woonplaats.getWoonplaats();
		}
		return null;
	}
	public String getProvincie(String emailad){
		Inlog provincie = zoek(emailad);
		if(provincie != null){
			return provincie.getProvincie();
		}
		return null;
	}

	public String getTelefoonnummer(String emailad){
		Inlog telefoonnummer = zoek(emailad);
		if(telefoonnummer != null){
			return telefoonnummer.getTelefoonnummer();
		}
		return null;
	}

	public String getTypeAccount(String emailad){
		Inlog type = zoek(emailad);
		if(type != null){
			return type.getTypeAccount();
		}
		return null;
	}

	public String getReizen(String emailad){
		Inlog reizen = zoek(emailad);
		if(reizen != null){
			return reizen.getDevoorkeuren().getReizen();
		}
		return null;
	}

	public String getRoken(String emailad){
		Inlog roken = zoek(emailad);
		if(roken != null){
			return roken.getDevoorkeuren().getRoken();
		}
		return null;
	}

	public String getFiets(String emailad){
		Inlog fiets = zoek(emailad);
		if(fiets != null){
			return fiets.getDevoorkeuren().getFiets();
		}
		return null;
	}

	public String getAutoMerk(String emailad){
		Inlog merk = zoek(emailad);
		if(merk != null){
			return merk.getDeAuto().getAutoMerk();
		}
		return null;
	}

	public String getAutoType(String emailad){
		Inlog type = zoek(emailad);
		if(type != null){
			return type.getDeAuto().getAutoType();
		}
		return null;
	}

	public int getAutoPlaatsen(String emailad){
		Inlog plaatsen = zoek(emailad);
		if(plaatsen != null){
			return plaatsen.getDeAuto().getAutoPlaats();
		}
		return 0;
	}

	public String getProvincieString(String emailad){
		Inlog provincie = zoek(emailad);
		if(provincie != null){
			return provincie.getDeAuto().getProvinciesString();
		}
		return null;
	}
	public String getAutoCommentaar(String emailad){
		Inlog comment = zoek(emailad);
		if(comment != null){
			return comment.getDeAuto().getCommentaar();
		}
		return null;
	}

	public String getVoornaamAchternaam(String emailad){
		Inlog VoornaamAchternaam = zoek(emailad);
		if(VoornaamAchternaam != null){
			return " " + VoornaamAchternaam.getVoornaam() + " " + VoornaamAchternaam.getAchternaam();
		}
		return null;
	}

	public String getPostcodeWoonplaatsProvincie(String emailad){
		Inlog PostcodeWoonplaatsProvincie = zoek(emailad);
		if(PostcodeWoonplaatsProvincie != null){
			return PostcodeWoonplaatsProvincie.getPostcode().toUpperCase() + ", " + PostcodeWoonplaatsProvincie.getWoonplaats();
		}
		return null;
	}

	public String getgetAdresStraatNaamHuisNummer(String emailad){
		Inlog StraatNaamHuisNummer = zoek(emailad);
		if(StraatNaamHuisNummer != null){
			return StraatNaamHuisNummer.getAdres() + " " + StraatNaamHuisNummer.getHuisnummer();
		}
		return null;
	}

	public Inlog zoek(String emailad){
		for(Inlog i: inlog){
			if(i.getEmailadres().equals(emailad)){
				return i;
			}
		}
		return null;
	}

	public Inlog getInlog(int positie){
		return inlog.get(positie);
	}
	public int size(){
		return inlog.size();
	}
	//Schrijft passagier uit bij auto vanuit ZH
	public boolean verwijderAutoZH(String Passagieremail, String autoMail){
		for(Inlog i : inlog){
			if(i.getTypeAccount().equals("met auto")){
				if(i.getEmailadres().equals(autoMail)){
					if(i.getDeAuto().bestaatInArrayList(Passagieremail)==true){
						System.out.println(Passagieremail + " verwijdert uit auto van" + autoMail);
						Inlog moetWeg = zoek(Passagieremail);
						i.getDeAuto().verwijderuitAuto(moetWeg);
						return true;
					}
				}	
			}
		}
		System.out.println(Passagieremail + " bestaat niet in arraylist en dus false" + autoMail);
		return false;
	}

	public ArrayList<String> gebruikersMetAuto(String email){
		ArrayList<String> r = new ArrayList<String>();
		for (Inlog ii: inlog) {
			if(ii.getEmailadres().equals(email)){
				for (Inlog i: inlog) {
					if (i.getDeAuto() != null)
						if (i.getEmailadres() !=null){
							boolean[] b = getProvincieArray(i.getEmailadres()); 
							if (ii.getProvincie().equals("Drenthe")) {
								if (b[0]) {
									r.add(i.getDeAuto().getAutoMerk()+":*:"+i.getDeAuto().getAutoType()+":*:"+i.getDeAuto().getProvinciesKortString()+":*:"+i.getDevoorkeuren().getReizen()+ ":*:"+i.getDevoorkeuren().getRoken()+ ":*:"+i.getDevoorkeuren().getFiets()+":*:"+i.getDeAuto().getAantalMensen() + "/"+ i.getDeAuto().getAutoPlaats()+ ":*:"+i.getEmailadres());
								}
							}
							if (ii.getProvincie().equals("Flevoland")) {
								if (b[1]) {
									r.add(i.getDeAuto().getAutoMerk()+":*:"+i.getDeAuto().getAutoType()+":*:"+i.getDeAuto().getProvinciesKortString()+":*:"+i.getDevoorkeuren().getReizen()+ ":*:"+i.getDevoorkeuren().getRoken()+ ":*:"+i.getDevoorkeuren().getFiets()+":*:"+i.getDeAuto().getAantalMensen() + "/"+ i.getDeAuto().getAutoPlaats()+ ":*:"+i.getEmailadres());
								}
							}
							if (ii.getProvincie().equals("Friesland")) {
								if (b[2]) {
									r.add(i.getDeAuto().getAutoMerk()+":*:"+i.getDeAuto().getAutoType()+":*:"+i.getDeAuto().getProvinciesKortString()+":*:"+i.getDevoorkeuren().getReizen()+ ":*:"+i.getDevoorkeuren().getRoken()+ ":*:"+i.getDevoorkeuren().getFiets()+":*:"+i.getDeAuto().getAantalMensen() + "/"+ i.getDeAuto().getAutoPlaats()+ ":*:"+i.getEmailadres());
								}
							}
							if (ii.getProvincie().equals("Gelderland")) {
								if (b[3]) {
									r.add(i.getDeAuto().getAutoMerk()+":*:"+i.getDeAuto().getAutoType()+":*:"+i.getDeAuto().getProvinciesKortString()+":*:"+i.getDevoorkeuren().getReizen()+ ":*:"+i.getDevoorkeuren().getRoken()+ ":*:"+i.getDevoorkeuren().getFiets()+":*:"+i.getDeAuto().getAantalMensen() + "/"+ i.getDeAuto().getAutoPlaats()+ ":*:"+i.getEmailadres());
								}
							}
							if (ii.getProvincie().equals("Groningen")) {
								if (b[4]) {
									r.add(i.getDeAuto().getAutoMerk()+":*:"+i.getDeAuto().getAutoType()+":*:"+i.getDeAuto().getProvinciesKortString()+":*:"+i.getDevoorkeuren().getReizen()+ ":*:"+i.getDevoorkeuren().getRoken()+ ":*:"+i.getDevoorkeuren().getFiets()+":*:"+i.getDeAuto().getAantalMensen() + "/"+ i.getDeAuto().getAutoPlaats()+ ":*:"+i.getEmailadres());
								}
							}
							if (ii.getProvincie().equals("Limburg")) {
								if (b[5]) {
									r.add(i.getDeAuto().getAutoMerk()+":*:"+i.getDeAuto().getAutoType()+":*:"+i.getDeAuto().getProvinciesKortString()+":*:"+i.getDevoorkeuren().getReizen()+ ":*:"+i.getDevoorkeuren().getRoken()+ ":*:"+i.getDevoorkeuren().getFiets()+":*:"+i.getDeAuto().getAantalMensen() + "/"+ i.getDeAuto().getAutoPlaats()+ ":*:"+i.getEmailadres());
								}
							}
							if (ii.getProvincie().equals("Noord-Brabant")) {
								if (b[6]) {
									r.add(i.getDeAuto().getAutoMerk()+":*:"+i.getDeAuto().getAutoType()+":*:"+i.getDeAuto().getProvinciesKortString()+":*:"+i.getDevoorkeuren().getReizen()+ ":*:"+i.getDevoorkeuren().getRoken()+ ":*:"+i.getDevoorkeuren().getFiets()+":*:"+i.getDeAuto().getAantalMensen() + "/"+ i.getDeAuto().getAutoPlaats()+ ":*:"+i.getEmailadres());
								}
							}
							if (ii.getProvincie().equals("Noord-Holland")) {
								if (b[7]) {
									r.add(i.getDeAuto().getAutoMerk()+":*:"+i.getDeAuto().getAutoType()+":*:"+i.getDeAuto().getProvinciesKortString()+":*:"+i.getDevoorkeuren().getReizen()+ ":*:"+i.getDevoorkeuren().getRoken()+ ":*:"+i.getDevoorkeuren().getFiets()+":*:"+i.getDeAuto().getAantalMensen() + "/"+ i.getDeAuto().getAutoPlaats()+ ":*:"+i.getEmailadres());
								}
							}
							if (ii.getProvincie().equals("Overijssel")) {
								if (b[8]) {
									r.add(i.getDeAuto().getAutoMerk()+":*:"+i.getDeAuto().getAutoType()+":*:"+i.getDeAuto().getProvinciesKortString()+":*:"+i.getDevoorkeuren().getReizen()+ ":*:"+i.getDevoorkeuren().getRoken()+ ":*:"+i.getDevoorkeuren().getFiets()+":*:"+i.getDeAuto().getAantalMensen() + "/"+ i.getDeAuto().getAutoPlaats()+ ":*:"+i.getEmailadres());
								}
							}
							if (ii.getProvincie().equals("Utrecht")) {
								if (b[9]) {
									r.add(i.getDeAuto().getAutoMerk()+":*:"+i.getDeAuto().getAutoType()+":*:"+i.getDeAuto().getProvinciesKortString()+":*:"+i.getDevoorkeuren().getReizen()+ ":*:"+i.getDevoorkeuren().getRoken()+ ":*:"+i.getDevoorkeuren().getFiets()+":*:"+i.getDeAuto().getAantalMensen() + "/"+ i.getDeAuto().getAutoPlaats()+ ":*:"+i.getEmailadres());
								}
							}
							if (ii.getProvincie().equals("Zeeland")) {
								if (b[10]) {
									r.add(i.getDeAuto().getAutoMerk()+":*:"+i.getDeAuto().getAutoType()+":*:"+i.getDeAuto().getProvinciesKortString()+":*:"+i.getDevoorkeuren().getReizen()+ ":*:"+i.getDevoorkeuren().getRoken()+ ":*:"+i.getDevoorkeuren().getFiets()+":*:"+i.getDeAuto().getAantalMensen() + "/"+ i.getDeAuto().getAutoPlaats()+ ":*:"+i.getEmailadres());
								}
							}
							if (ii.getProvincie().equals("Zuid-Holland")) {
								if (b[11]) {
									r.add(i.getDeAuto().getAutoMerk()+":*:"+i.getDeAuto().getAutoType()+":*:"+i.getDeAuto().getProvinciesKortString()+":*:"+i.getDevoorkeuren().getReizen()+ ":*:"+i.getDevoorkeuren().getRoken()+ ":*:"+i.getDevoorkeuren().getFiets()+":*:"+i.getDeAuto().getAantalMensen() + "/"+ i.getDeAuto().getAutoPlaats()+ ":*:"+i.getEmailadres());
								}
							}
						}
				}
			}
		}
		return r;
	}



	public ArrayList<String> ZondermetAutoGegevens(String emailad){
		ArrayList<String> r = new ArrayList<String>();
		for (Inlog i: inlog) {
			if(i.getEmailadres().equals(emailad)){
				if (i.getDeAuto() != null)
					if (i.getEmailadres() !=null){
						r.add(i.getVoornaam()+" "+i.getAchternaam()+":*:"+i.getDeAuto().getAutoMerk()+" "+i.getDeAuto().getAutoType()+":*:"+i.getDeAuto().getAantalMensen() + " van de "+i.getDeAuto().getAutoPlaats()+":*:"+i.getDeAuto().getProvinciesString()+":*:"+i.getDevoorkeuren().getReizen()+ ":*:"+i.getDevoorkeuren().getRoken()+ ":*:"+i.getDevoorkeuren().getFiets()+":*:"+i.getEmailadres()+":*:"+i.getDeAuto().getCommentaar());
					}
			}
		}
		return r;
	}

	public ArrayList<String> MetbekendeGegevensWijzigen(String emailad){
		ArrayList<String> r = new ArrayList<String>();
		for(Inlog i: inlog){
			if(i.getEmailadres().equals(emailad)){
				if(i.getTypeAccount().equals("met auto")){
					r.add(i.getVoornaam() + ":*:" + i.getAchternaam() + ":*:" + i.getGeboortedatumDag() + ":*:" + i.getGeboortedatumMaand() + ":*:" + i.getGeboortedatumYear() + ":*:" + i.getAdres() + ":*:" + i.getHuisnummer() + ":*:" + i.getPostcode().toUpperCase() + ":*:" + i.getWoonplaats() + ":*:" + i.getProvincie() + ":*:" + i.getTelefoonnummer()+":*:"+i.getDevoorkeuren().getFiets()+":*:"+i.getDevoorkeuren().getReizen()+":*:"+i.getDevoorkeuren().getRoken()+":*:"+i.getDeAuto().getAutoMerk()+":*:"+i.getDeAuto().getAutoType()+":*:"+i.getDeAuto().getAutoPlaats()+":*:"+i.getDeAuto().getCommentaar());
				}
			}
		}
		return r;
	}

	public boolean[] getProvincieArray(String email){
		for(Inlog i: inlog){
			if(i.getEmailadres().equals(email)){
				boolean[] a = i.getDeAuto().getProvincieArray();
				return a;
			}
		}
		return null;
	}

	public ArrayList<String> ZonderbekendeGegevensWijzigen(String emailad){
		ArrayList<String> r = new ArrayList<String>();
		for (Inlog i : inlog) {
			if(i.getEmailadres().equals(emailad)){
				if(i.getEmailadres() != null){
					r.add(i.getVoornaam() + ":*:" + i.getAchternaam() + ":*:" + i.getGeboortedatumDag() + ":*:" + i.getGeboortedatumMaand() + ":*:" + i.getGeboortedatumYear() + ":*:" + i.getAdres() + ":*:" + i.getHuisnummer() + ":*:" + i.getPostcode().toUpperCase() + ":*:" + i.getWoonplaats() + ":*:" + i.getProvincie() + ":*:" + i.getTelefoonnummer()+":*:"+i.getDevoorkeuren().getFiets()+":*:"+i.getDevoorkeuren().getReizen()+":*:"+i.getDevoorkeuren().getRoken());
				}
			}
		}
		return r;
	}
	public ArrayList<String> IngeschrevenbijAuto(String emailad){
		ArrayList<String> r = new ArrayList<String>();
		for(Inlog i: inlog){
			if(i.getDeAuto() != null){
				if(i.getDeAuto().bestaatInArrayList(emailad) == true){
					r.add(i.getVoornaam() + " " + i.getAchternaam());
					r.add(i.getEmailadres());
					r.add(i.getTelefoonnummer());
					r.add(i.getDeAuto().getProvinciesKortString());
					r.add(i.getDevoorkeuren().getReizen());
					r.add(i.getDevoorkeuren().getRoken());
					r.add(i.getDevoorkeuren().getFiets());
					r.add(i.getDeAuto().getAantalMensen()+"/"+i.getDeAuto().getAutoPlaats());
				}
			}
		}
		return r;
	}


	public String zonderHome(String emailad){
		String r = "";
		for(Inlog i: inlog){
			if (emailad.equals(i.getEmailadres())){ 
				r = i.getVoornaam() + " " + i.getAchternaam()+":*:"+i.getGeboortedatumDag()+"-"+i.getGeboortedatumMaand()+"-"+i.getGeboortedatumYear()+":*:"+i.getAdres()+" "+i.getHuisnummer()+":*:"+i.getPostcode()+", "+i.getWoonplaats()+":*:"+i.getProvincie()+":*:"+i.getTelefoonnummer()+":*:"+i.getDevoorkeuren().getReizen()+":*:"+i.getDevoorkeuren().getRoken()+":*:"+i.getDevoorkeuren().getFiets();
			}
		}
		return r;
	}

	public String metHome(String emailad){
		String r = "";
		for(Inlog i: inlog){
			if (emailad.equals(i.getEmailadres())){
				if(i.getDeAuto() != null){
					r = i.getVoornaam() + " " + i.getAchternaam()+":*:"+i.getGeboortedatumDag()+"-"+i.getGeboortedatumMaand()+"-"+i.getGeboortedatumYear()+":*:"+i.getAdres()+" "+i.getHuisnummer()+":*:"+i.getPostcode()+", "+i.getWoonplaats()+":*:"+i.getProvincie()+":*:"+i.getTelefoonnummer()+":*:"+i.getDevoorkeuren().getReizen()+":*:"+i.getDevoorkeuren().getRoken()+":*:"+i.getDevoorkeuren().getFiets() +":*:" + i.getDeAuto().getAutoMerk() + " " + i.getDeAuto().getAutoType() +":*:"+i.getDeAuto().getAantalMensen()+"/"+i.getDeAuto().getAutoPlaats() +":*:" +i.getDeAuto().getProvinciesString()+":*:"+i.getDeAuto().getCommentaar()+":*:";
				}
			}
		}
		return r;
	}

	public ArrayList<String> MetAutoingeschreven(String emailad){
		ArrayList<String> r = new ArrayList<String>();
		for(Inlog i: inlog){
			if(i.getDeAuto() != null){
				if (emailad.equals(i.getEmailadres())) {
					for (String s:i.getDeAuto().geefIngeschrevenCarpooler()) {
						r.add(s);
					}
				}
			}

		}
		return r;
	}

	public ArrayList<String> getPostcode2(String email) {
		ArrayList<String> s = new ArrayList<String>();
		for(Inlog i:inlog) {
			if (i.getEmailadres().equals(email)){ 
				s.add(i.getPostcode());
				for (String s1:i.getDeAuto().geefAdresIngeschrevenCarpooler()){
					s.add(s1);
				}
			}
		}
		for(String s3:s){
			System.out.println(s3);
		}
		return s;
	}

	public boolean autoVol(String autoMail) {
		System.out.println(autoMail);
		for(Inlog i: inlog){
			if (i.getEmailadres().equals(autoMail)){ 
				System.out.println(i.getDeAuto().getAantalMensen());
				if ((i.getDeAuto().getAantalMensen()) == 0){
					return true;
				}
			}
		}
		return false;
	}
}


